
import java.util.Random;
import java.util.Scanner;

public class Test14 {
    public static void main(String[] args) {
        //1.生成中奖号码
        int[] arr = createNumber();  //123456 7



        //测试的时候最好这样打印出来结果便于测试代码
        System.out.println("*****************************");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println("");
        System.out.println("*****************************");


        //2.用户输入彩票号码(红球+蓝球)
        int[] userInputArr=userInputNumber(); //654321
        /*//遍历用户输入的彩票号码
        for (int i = 0; i < userInputArr.length; i++) {
            System.out.print(userInputArr[i]+" ");
        }

         */
        //3.判断用户的中奖状况
        //红球 蓝球
        //默认是0,默认都没有中奖
        int redCount=0;
        int blueCount=0;

        //判断红球的中奖情况,注意for循环处的判断条件那里数组的长度要-1
        for (int i = 0; i < userInputArr.length-1; i++) {
            int redNumber= userInputArr[i];
            for (int j = 0; j < arr.length-1; j++) {      //这里数组的长度也要-1
                if(redNumber==arr[j]){
                    redCount++;
                    break;
                    //如果找到了,那么后面的数字就没有必要比较了
                    //跳出内循环,继续判断下一个红球号码是否中奖
                }
            }
        }

        //判断蓝球的中奖情况
        int blueNumber=userInputArr[userInputArr.length-1];
        if(blueNumber==arr[arr.length-1]){
            blueCount++;
        }
        //可以打印红球和蓝球的中奖个数
        System.out.println("红球的中奖个数是:"+redCount);
        System.out.println("蓝球的中奖个数是:"+blueCount);
        
        //根据红球的个数以及篮球的个数来判断中奖情况
        if(redCount==6&&blueCount==1){
            System.out.println("恭喜你,中奖1000万");
        } else if (redCount==6&&blueCount==0) {
            System.out.println("恭喜你,中奖五百万");
        } else if (redCount==5&&blueCount==1) {
            System.out.println("恭喜你,中奖3000");
        } else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {
            System.out.println("恭喜你,中奖200");
        }else if ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {
            System.out.println("恭喜你,中奖10");
        }else if ((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)) {
            System.out.println("恭喜你,中奖5");
        }else{
            System.out.println("谢谢惠顾");
        }


    }

    public static int[] userInputNumber() {
        //1.创建数组用于添加用户购买的彩票号码
        //6个红球 1个蓝球 数组长度:7
        int[] arr = new int[7];

        //2.利用键盘录入让用户输入
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < arr.length-1; ) {
            //让用户输入红球号码
            System.out.println("请输入第" + (i + 1) + "个红球号码");
            int redNumber = sc.nextInt();
            //要求redNumber要在1-33之间;并且唯一不重复
            if (redNumber >= 1 && redNumber <= 33) {
                //第一个条件存在的情况下,判断第二个条件是不是唯一不重复的
                boolean flag = contains(arr, redNumber);
                if (!flag) {
                    //不存在
                    //表示有效的,可以添加到数组中
                    arr[i] = redNumber;
                    i++;           //注意有效之后才可以存入数组中.i才可以变化,所以这个for循环那里没有i++
                } else {
                    //存在
                    System.out.println("当前号码已存在,请重新输入");
                }
            } else {
                System.out.println("当前红球号码超出范围");
            }

        }

        while (true) {
            //让用户输入蓝球号码
            System.out.println("请输入蓝球号码:");
            //1~16
            int blueNumber=sc.nextInt();


            if (blueNumber >= 1 && blueNumber <= 16) {
                arr[arr.length - 1] = blueNumber;
                break;        //猜对了就跳出循环
            } else {
                System.out.println("当前蓝球号码超出范围");   //如果超出范围了需要重新输入,所以要用一个循环
            }

        }
        return arr;
    }



    public static int[] createNumber() {
        //1.创建数组用于添加中奖号码
        //6个红球 1个蓝球 数组长度:7
        int[] arr=new int[7];

//        2.随机生成号码并添加到数组中
//        红球:不能重复的生成
//        蓝球:可以和红球的号码重复


        //生成红球号码并添加到数组中
        Random r=new Random();
        for (int i = 0; i < 6;  ) {  //注意这里不要i++
            //获取红球号码
            int redNumber=r.nextInt(33)+1;
//            因为红球号码不能重复,所以拿着号码到arr数组中进行判断
//            所以写一个方法来判断
            boolean flag=contains(arr,redNumber);//将方法返回的结果定义一个变量接收
            if(!flag){
                //不存在,把红球号码添加到数组中
                arr[i]=redNumber;
                i++;
            }
        }

        //生成蓝球号码添加到数组中的最大索引处
        int blueNumber=r.nextInt(16)+1;
        arr[arr.length-1]=blueNumber;

        return arr;
    }
//用于判断数字在数组中是否存在
    public static boolean contains(int[] arr,int number){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==number){
                return true;
            }
        }
        return false;
    }
}
